#ifndef DEF_SIMULATEUR
#define DEF_SIMULATEUR


#include <string>
#include <iostream>
#include <fstream>
#include <sstream>

#include "Parser.hpp"

#include "politiques/RM.hpp"
#include "politiques/EDF.hpp"

using namespace std;

namespace politique
{
	enum periodique 	{ RM, EDF, OFFP };
	enum aperiodique 	{ BG, TBS, OFFA };
};

class Simulateur
{
public:
	Simulateur(string fileUrl);
	~Simulateur();

	bool isSchedulable(politique::periodique politiqueP,politique::aperiodique politiqueA);
	// RM - TBS ne marche pas
	bool doSchedule(politique::periodique politiqueP,politique::aperiodique politiqueA);
	int getHyperPeriod();
private:
	std::vector<TacheAperiodique> _lesTachesAperiodique;
	std::vector<TachePeriodique> _lesTachesPeriodiques;
    ifstream *_file;
    Parser* _p;
};

#endif /* DEF_SIMULATEUR */
